package org.Image.management.ViewService.utils;

import javafx.scene.Node;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;

@Slf4j
public class ByPieceToolMethod {

    private ByPieceToolMethod() {
    }

    /***
     * // 批量更改按键的 “setVisible”（是否隐藏）
     * @param Visible 需要隐藏 还是 显示
     * @param keystroke 要批量更改的按键
     */
    public static void batchSetVisible(boolean Visible, Node... keystroke) {
        for (Node node : keystroke) {
            node.setVisible(Visible);
        }
    }


    /**
     * // 封装背景图片（将 File -封装为-> Background）
     *
     * @param Background 需要封装的图片路径
     * @return 返回封装结果
     */
    public static Background getBackground(File Background) {
        Image img = null;
        try {
            img = new Image(new FileInputStream(Background));
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
        //背景图片
        //第一个参数：X 位置是否重复
        //第二个参数：Y 位置是否重复
        //第三个参数：要使用的 背景位置 如果为 null，则默认为 任何 背景图片 的默认 背景位置。默认值为无插图，并定义为 0% 和 0%。也就是说，该位置位于左上角。
        //第四个参数：背景尺寸
        BackgroundImage bImg = new BackgroundImage(img, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT, BackgroundSize.DEFAULT);
        //封装背景图片
        return new Background(bImg);
    }


    /**
     * 将 @param destination 写入本地文件 @param input 加 @param name
     *
     * @param destination 写入的文件
     * @param input       写入本地目录
     * @param name        写入本地目录文件名称
     */
    public static void writeToLocal(File destination, File input, String name) {
        if (destination == null || input == null || name == null) {
           log.info("参数不能为空");
           return;
        }

        // 确保目标目录存在
        if (!input.exists() && !input.mkdirs()) {
            log.info("无法创建目录: {}", input);
            return;
        }

        File targetFile = new File(input, name);

        try {
            // 使用 NIO 的 Files.copy 方法复制文件，覆盖已存在的目标文件
            Files.copy(
                    destination.toPath(),
                    targetFile.toPath(),
                    StandardCopyOption.REPLACE_EXISTING
            );
            log.info("复制成功");
        } catch (IOException e) {
            log.info("文件复制失败 {}", e.getMessage());
        }
    }


}
